Computers are typically equipped with a central processing unit (CPU) that executes operating system instructions and user programs. The CPU executes program code in a primarily sequential manner, moving from one operation to the next. To increase the speed and efficiency of rendering data on a device display, some computers include a graphics processing unit (GPU). The GPU processes large arrays of data in a highly parallel manner, as is the case when rendering thousands of pixels on a display many times per second. In some cases, GPU's are used to perform intensive computational tasks, such as processing extremely large amounts of scientific data, for example, to simulate climate or astrophysical phenomenon. Typically, data is delivered to the GPU from the CPU over a host interface.
Environment sensors have matured significantly over the past twenty years, and are prevalent in everyday use. For example, billions of handheld devices (e.g. smartphones, tablet computers) have been sold and include at least one image sensor. Typically, these sensors output their data to the CPU, and the CPU stores this data in a central memory. If it is desired to process this data using a GPU, the CPU transfers the data from the central memory to a GPU memory using a host interface. Unfortunately, transferring the data over the host interface requires CPU processing time and also delays data processing since the GPU has to wait for the data to be loaded into its memory before processing can begin.
Therefore, it would be desirable to provide an efficient way for sensor data to be processed by a graphics processing unit to overcome the inefficiencies of conventional systems.